/**设计一个分数类接口，每个分数带有符号，可以进行加减乘除，这些方法应该有一个分数作为参数，并且应该将结果作为分数返回，类还能查找分数的倒数，比较两个分数，确定两个分数是否相等，将分数转换为字符串
 * 这个类应该能处理分母为零的情况，分数应该表示为最简形式，所有算术结果都应该是最简结果。*/
package Section1_ClassDesign;

public interface Fraction {
    /**
     * 与传入的分数相加
     * @param fraction 加的另一个分数 a.add(b)表示a+b
     * @return 两个分数的和
     */
    Fraction add(Fraction fraction);

    /**
     * 与传入的分数相减
     * @param fraction 减去另个一个分数，a.minus(b)表示a-b
     * @return  两个分数的差
     *
     */
    Fraction minus(Fraction fraction);

    /**
     * 与传入的分数相乘
     * @param fraction 减去另个一个分数，a.mul(b)表示a*b
     * @return  两个分数的积
     */
    Fraction mul(Fraction fraction);

    /**
     * 与传入的分数相减
     * @param fraction 减去另个一个分数，a.divide(b)表示a/b
     * @return  两个分数的商
     */
    Fraction divide(Fraction fraction);

    /**
     * 获得分数的倒数
     * @return 该分数的倒数
     */
    Fraction reverse();

    /**
     * 与另一个分数比较大小
     * @param fraction 用于比较的另一个分数
     * @return true表示作为形参的分数更小，false表示作为形参的分数更大
     */
    boolean isBigger(Fraction fraction);

    /**
     * 比较两个分数是否相等
     * @param fraction 用于比较的另一个分数
     * @return true表示两个分数相等，false表示两个分数不相等
     */
    boolean equals(Fraction fraction);

    /**
     * 返回分数的最简形式
     * @param integerOne 分子
     * @param integerTwo 分母
     */
    void simplest(int integerOne, int integerTwo);

    /**
     * 比较两个分数是否相等
     * @return 分数的字符串表示
     */
    @Override
    String toString();
}
